package com;

/**
 * 作者: 谢韬元
 * 日期: 2024/12/11
 * 类名: OperationFactory
 */
public class OperationFactory {
    /**
     * 创建并返回指定运算符对应的Operation实例
     *
     * @param operation 字符串类型的运算符，用于确定创建哪种类型的Operation实例
     * @return 返回与指定运算符对应的Operation实例
     * @throws IllegalArgumentException 如果传入的运算符不受支持，则抛出此异常
     */
    public static Operation createOperation(String operation) {
        // 根据传入的运算符类型，创建并返回对应的Operation实例
        switch (operation){
            case "+":
                return new AddOperation();
            case "-":
                return new SubtractOperation();
            case "*":
                return new MultiplyOperation();
            case "/":
                return new DivideOperation();
            case "%":
                return new ModuloOperation();
            default:
                // 如果运算符不受支持，则抛出异常
                throw new IllegalArgumentException("不支持的运算符：" + operation);
        }
    }
}
